.\"	$OpenBSD: daily.8,v 1.22 2015/07/24 15:29:52 jmc Exp $
.\"
.\" Copyright (c) 2003 Jason McIntyre <jmc@openbsd.org>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
.\" copyright notice and this permission notice appear in all copies.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd $Mdocdate: July 24 2015 $
.Dt DAILY 8
.Os
.Sh NAME
.Nm daily , weekly , monthly
.Nd periodic system maintenance
.Sh SYNOPSIS
.Nm /etc/daily
.Nm /etc/weekly
.Nm /etc/monthly
.Sh DESCRIPTION
The three files
.Pa /etc/daily ,
.Pa /etc/weekly ,
and
.Pa /etc/monthly
are shell scripts run on a periodic basis by the clock daemon,
.Xr cron 8 .
They take care of some basic administrative tasks.
Their output, if any, is mailed to root.
.Pp
.Sy Note :
The scripts are all run as part of root's
.Xr crontab 5 .
However, it is strongly suggested that the root mail account
be an alias that forwards messages to a real user or set of users.
Otherwise, root's mail will simply accumulate in
.Pa /var/mail
until the partition holding it runs out of space.
See
.Xr newaliases 8
for further details.
.Pp
These scripts should not be altered.
Local additions should be made to the files
.Pa /etc/daily.local ,
.Pa /etc/weekly.local ,
and
.Pa /etc/monthly.local ,
which will be executed by
.Pa /etc/daily ,
.Pa /etc/weekly ,
and
.Pa /etc/monthly ,
respectively.
The
.Pa *.local
files are executed first, which makes it convenient to do any necessary
cleanup and backup and to define any required shell variables before the
script is run.
.Ss /etc/daily
This script is run daily.
It currently does the following:
.Bl -dash
.It
Runs the script
.Pa /etc/daily.local ,
if it exists.
.It
Removes scratch and junk files from
.Pa /tmp .
.It
Purges accounting records from
.Pa /var/account ,
if they exist.
See
.Xr accton 8
and
.Xr sa 8 .
.It
Creates a backup root file system which is updated daily.
This only happens if the following conditions are met:
.Bl -enum -offset indent
.It
The environment variable
.Ev ROOTBACKUP
must be set.
For example, the following can be added to
.Pa /etc/daily.local :
.Pp
.Dl ROOTBACKUP=1
.It
The mount directory
.Pa /altroot
must exist, and there must be an
.Pa /etc/fstab
entry specifying a configured disk device, the file system type
.Sq ffs ,
and
.Sq xx
for the mount options, e.g.
.Pp
.Dl /dev/wd0j /altroot ffs xx 0 0
.El
.It
Checks disk status.
Reports on the amount of disk used/available via
.Xr df 1 .
Reports on which file systems need to be dumped via
.Xr dump 8 .
.It
Reports on the status of the mail queue via
.Xr mailq 8 .
.It
Reports networking statistics via
.Xr netstat 1 .
.It
Runs the
.Xr calendar 1
utility unless the environment variable
.Ev CALENDAR
is set to 0 in
.Pa /etc/daily.local
or the host is a
.Xr yp 8
client.
.It
If
.Ev CHECKFILESYSTEMS
is set to 1 in
.Pa /etc/daily.local ,
runs
.Xr fsck 8
with the no-write flag
.Pq Fl n .
.It
If the file
.Pa /etc/Distfile
exists, runs the
.Xr rdist 1
utility.
.It
Runs the system
.Xr security 8
check script.
.El
.Ss /etc/weekly
This script is run weekly.
It currently does the following:
.Bl -dash
.It
Runs the script
.Pa /etc/weekly.local ,
if it exists.
.It
Rebuilds the
.Xr locate 1
database, if there is an existing
.Pa /var/db/locate.database
file.
.It
Rebuilds the
.Xr whatis 1
database(s) via
.Xr makewhatis 8 .
.It
If
.Ev LOGINACCOUNTING
is set to 1 in
.Pa /etc/weekly.local
and the
.Pa /var/log/wtmp
file exists, show individual users' login via the
.Xr ac 8
utility.
.El
.Ss /etc/monthly
This script is run monthly.
It currently does the following:
.Bl -dash
.It
Runs the script
.Pa /etc/monthly.local ,
if it exists.
.El
.Sh ENVIRONMENT
The following variables can be set in
.Pa /etc/daily.local :
.Pp
.Bl -tag -width "CHECKFILESYSTEMS" -compact
.It Ev CALENDAR
If set to 0, do not run
.Xr calendar 1 .
.It Ev CHECKFILESYSTEMS
If set to 1, run
.Xr fsck 8
with the no-write flag.
.It Ev ROOTBACKUP
If set to 1, make a backup of the root file system.
.It Ev VERBOSESTATUS
If set to 0,
.Xr df 1 ,
.Xr dump 8 ,
and
.Xr netstat 1
are skipped.
Consequently, if none of the other commands produce any output,
no mail will be sent to root.
.El
.Pp
The following variables can be set in
.Pa /etc/weekly.local :
.Pp
.Bl -tag -width "CHECKFILESYSTEMS" -compact
.It Ev LOGINACCOUNTING
If set to 1, run
.Xr ac 8
to report login accounting.
.It Ev MAKEWHATISARGS
If set to a string containing at least one character (even a blank),
use that string as the arguments to
.Xr makewhatis 8 .
If unset or empty, use the default argument
.Fl Q .
.El
.Sh FILES
.Bl -tag -width "/var/cron/tabs/root" -compact
.It Pa /etc/daily
Daily maintenance script.
.It Pa /etc/daily.local
Site specific daily maintenance script.
.It Pa /etc/weekly
Weekly maintenance script.
.It Pa /etc/weekly.local
Site specific weekly maintenance script.
.It Pa /etc/monthly
Monthly maintenance script.
.It Pa /etc/monthly.local
Site specific monthly maintenance script.
.It Pa /var/cron/tabs/root
Root
.Xr crontab 5 .
.El
.Sh SEE ALSO
.Xr calendar 1 ,
.Xr crontab 1 ,
.Xr df 1 ,
.Xr locate 1 ,
.Xr netstat 1 ,
.Xr rdist 1 ,
.Xr whatis 1 ,
.Xr crontab 5 ,
.Xr ac 8 ,
.Xr accton 8 ,
.Xr cron 8 ,
.Xr dump 8 ,
.Xr fsck 8 ,
.Xr mailq 8 ,
.Xr makewhatis 8 ,
.Xr sa 8 ,
.Xr security 8 ,
.Xr yp 8
.Sh HISTORY
The
.Nm daily , weekly ,
and
.Nm monthly
scripts first appeared in
.Bx 4.3 Reno .
This manual page first appeared in
.Ox 3.4 .
.Sh CAVEATS
If the host machine is not running 24/7, these scripts may never be run.
Adjusting the time fields in the system
.Xr crontab 5
may partially alleviate this problem.
.Pp
Be careful when adding local additions.
Services such as
.Qq www
have their own users, and should be run as such, not as root.
It may be more appropriate to create a separate
.Xr crontab 5
for such services.
